#include "regm_determinacion.h"
#include "ui_regm_determinacion.h"

Regm_Determinacion::Regm_Determinacion(QWidget *parent, Determinacion *det) :
    QDialog(parent),
    ui(new Ui::Regm_Determinacion)
{
    ui->setupUi(this);
    ui->id_determinacion->setVisible(false);

    this->setWindowFlags(Qt::Tool);
    this->setGeometry(QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, this->size(), qApp->desktop()->availableGeometry()));
    band = false;

    //***Validaciones**//
    validatorS = new QRegExpValidator(QRegExp("[^0-9]{40}"),this);
    ui->nombre_det->setValidator(validatorS);
    validatorN = new QIntValidator(1, 99999999);
    ui->cantidad_det->setValidator(validatorN);

    if(det != NULL)
    {
        this->setWindowTitle("Modificar Determinación");

        ui->id_determinacion->setText(QString::number(det->getId_determinacion()));
        ui->nombre_det->setText(det->getNombre());
        ui->metodo_det->setText(det->getMetodo());
        ui->tipo_res_det->setText(det->getTipo_resultado());
        ui->unidad_det->setText(det->getUnidad_medida());
        ui->cantidad_det->setText(QString::number(det->getCantidad()));
        ui->volumen_det->setText(det->getVolumen_muestra());
    }
    else
    {
       this->setWindowTitle("Registrar Determinación");
    }
}

Regm_Determinacion::~Regm_Determinacion()
{
    delete ui;
}

void Regm_Determinacion::on_boton_aceptar_clicked()
{

    if(ui->nombre_det->text().simplified() == "")
    {
        if (ui->nombre_det->text().simplified() == "")
        {
            ui->nombre_det->setFocus();
            QToolTip::showText(ui->nombre_det->mapToGlobal(QPoint(10,8)), "Campo Obligatorio");
        }
    }
    else
    {
        Determinacion *nuevaDet = new Determinacion();

        if (!ui->id_determinacion->text().isEmpty())
        {
            nuevaDet->setId_determinacion(ui->id_determinacion->text().toInt());
        }
        else
        {
            QSqlQuery query;
            query.exec("select coalesce(max(id_determinacion),0) from determinacion");
            int max_id;

            while (query.next())
            {
                max_id = query.value(0).toInt();
            }

            nuevaDet->setId_determinacion(max_id + 1);

        }

        nuevaDet->setNombre(ui->nombre_det->text().simplified());
        nuevaDet->setMetodo(ui->metodo_det->text().simplified());
        nuevaDet->setCantidad(ui->cantidad_det->text().toInt());
        nuevaDet->setTipo_resultado(ui->tipo_res_det->text().simplified());
        nuevaDet->setUnidad_medida(ui->unidad_det->text());
        nuevaDet->setVolumen_muestra(ui->volumen_det->text());
        nuevaDet->setEstado("activo");

        nuevaDet->save();
        cuadroMensaje("","Determinación Registrada");
        delete nuevaDet;
        this->close();

    }

}

void Regm_Determinacion::on_boton_cancelar_clicked()
{
    this->close();
}
